package net.lulihu.pangolin.headless.server.handler;

import io.netty.channel.ChannelHandlerContext;
import lombok.extern.slf4j.Slf4j;
import net.lulihu.pangolin.headless.common.protocol.ProtocolMessageType;
import net.lulihu.pangolin.headless.common.protocol.handler.MessageHandler;
import net.lulihu.pangolin.headless.common.protocol.handler.MessageTypeHandlerRegisteredException;
import net.lulihu.pangolin.headless.common.protocol.handler.MessageTypeHandlerRegistration;

/**
 * 代理服务器消息总处理器
 */
@Slf4j
public class ProxyServerMessageHandler extends MessageHandler {

    static {
        try {
            // 心跳消息处理
            MessageTypeHandlerRegistration.register(ProtocolMessageType.TYPE_HEARTBEAT,
                    (context, message) -> {
                        if (log.isDebugEnabled()) log.debug("收到客户端心跳消息");
                    });
        } catch (MessageTypeHandlerRegisteredException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
        ctx.channel().close();
        log.error("", cause);
    }
}
